package org.gr.ias.common.entity;

import java.io.Serializable;
import java.math.BigDecimal;

public class ProjectFinancingExtDebit implements Serializable {
    /** 主键*/
    private String id;

    /** 对应融资信息ID*/
    private String projectFinancingId;

    /** 可承担最高利息*/
    private Double maximunInterest;

    /** 资金占用时长(开始)*/
    private Integer occupyTimeStart;

    /** 资金占用时长(结束)*/
    private Integer occupyTimeEnd;

    /** 资金占用时长单位*/
    private String occupyTimeUnit;

    /** 可提供风控：
            01-抵押
            02-担保
            03-信用
            04-其他*/
    private String canProvideRiskControl;

    /** 可提供风控备注*/
    private String canProvideRiskControlRemark;

    /** 抵押物类型：
            01-固定资产
            02-有价证券
            03-其他资产*/
    private String collateralType;

    /** 抵押物类型备注*/
    private String collateralTypeRemark;

    /** 抵押物市值*/
    private BigDecimal collateralValues;

    /** 抵押物市值单位*/
    private String collateralValuesUnit;

    /** 还款来源：
            01-销售回款
            02-其他来源*/
    private String repaymentSource;

    /** 还款来源备注*/
    private String repaymentSourceRemark;

    private static final long serialVersionUID = 1L;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id == null ? null : id.trim();
    }

    public String getProjectFinancingId() {
        return projectFinancingId;
    }

    public void setProjectFinancingId(String projectFinancingId) {
        this.projectFinancingId = projectFinancingId == null ? null : projectFinancingId.trim();
    }

    public Double getMaximunInterest() {
        return maximunInterest;
    }

    public void setMaximunInterest(Double maximunInterest) {
        this.maximunInterest = maximunInterest;
    }

    public Integer getOccupyTimeStart() {
        return occupyTimeStart;
    }

    public void setOccupyTimeStart(Integer occupyTimeStart) {
        this.occupyTimeStart = occupyTimeStart;
    }

    public Integer getOccupyTimeEnd() {
        return occupyTimeEnd;
    }

    public void setOccupyTimeEnd(Integer occupyTimeEnd) {
        this.occupyTimeEnd = occupyTimeEnd;
    }

    public String getOccupyTimeUnit() {
        return occupyTimeUnit;
    }

    public void setOccupyTimeUnit(String occupyTimeUnit) {
        this.occupyTimeUnit = occupyTimeUnit == null ? null : occupyTimeUnit.trim();
    }

    public String getCanProvideRiskControl() {
        return canProvideRiskControl;
    }

    public void setCanProvideRiskControl(String canProvideRiskControl) {
        this.canProvideRiskControl = canProvideRiskControl == null ? null : canProvideRiskControl.trim();
    }

    public String getCanProvideRiskControlRemark() {
        return canProvideRiskControlRemark;
    }

    public void setCanProvideRiskControlRemark(String canProvideRiskControlRemark) {
        this.canProvideRiskControlRemark = canProvideRiskControlRemark == null ? null : canProvideRiskControlRemark.trim();
    }

    public String getCollateralType() {
        return collateralType;
    }

    public void setCollateralType(String collateralType) {
        this.collateralType = collateralType == null ? null : collateralType.trim();
    }

    public String getCollateralTypeRemark() {
        return collateralTypeRemark;
    }

    public void setCollateralTypeRemark(String collateralTypeRemark) {
        this.collateralTypeRemark = collateralTypeRemark == null ? null : collateralTypeRemark.trim();
    }

    public BigDecimal getCollateralValues() {
        return collateralValues;
    }

    public void setCollateralValues(BigDecimal collateralValues) {
        this.collateralValues = collateralValues;
    }

    public String getCollateralValuesUnit() {
        return collateralValuesUnit;
    }

    public void setCollateralValuesUnit(String collateralValuesUnit) {
        this.collateralValuesUnit = collateralValuesUnit == null ? null : collateralValuesUnit.trim();
    }

    public String getRepaymentSource() {
        return repaymentSource;
    }

    public void setRepaymentSource(String repaymentSource) {
        this.repaymentSource = repaymentSource == null ? null : repaymentSource.trim();
    }

    public String getRepaymentSourceRemark() {
        return repaymentSourceRemark;
    }

    public void setRepaymentSourceRemark(String repaymentSourceRemark) {
        this.repaymentSourceRemark = repaymentSourceRemark == null ? null : repaymentSourceRemark.trim();
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        ProjectFinancingExtDebit other = (ProjectFinancingExtDebit) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getProjectFinancingId() == null ? other.getProjectFinancingId() == null : this.getProjectFinancingId().equals(other.getProjectFinancingId()))
            && (this.getMaximunInterest() == null ? other.getMaximunInterest() == null : this.getMaximunInterest().equals(other.getMaximunInterest()))
            && (this.getOccupyTimeStart() == null ? other.getOccupyTimeStart() == null : this.getOccupyTimeStart().equals(other.getOccupyTimeStart()))
            && (this.getOccupyTimeEnd() == null ? other.getOccupyTimeEnd() == null : this.getOccupyTimeEnd().equals(other.getOccupyTimeEnd()))
            && (this.getOccupyTimeUnit() == null ? other.getOccupyTimeUnit() == null : this.getOccupyTimeUnit().equals(other.getOccupyTimeUnit()))
            && (this.getCanProvideRiskControl() == null ? other.getCanProvideRiskControl() == null : this.getCanProvideRiskControl().equals(other.getCanProvideRiskControl()))
            && (this.getCanProvideRiskControlRemark() == null ? other.getCanProvideRiskControlRemark() == null : this.getCanProvideRiskControlRemark().equals(other.getCanProvideRiskControlRemark()))
            && (this.getCollateralType() == null ? other.getCollateralType() == null : this.getCollateralType().equals(other.getCollateralType()))
            && (this.getCollateralTypeRemark() == null ? other.getCollateralTypeRemark() == null : this.getCollateralTypeRemark().equals(other.getCollateralTypeRemark()))
            && (this.getCollateralValues() == null ? other.getCollateralValues() == null : this.getCollateralValues().equals(other.getCollateralValues()))
            && (this.getCollateralValuesUnit() == null ? other.getCollateralValuesUnit() == null : this.getCollateralValuesUnit().equals(other.getCollateralValuesUnit()))
            && (this.getRepaymentSource() == null ? other.getRepaymentSource() == null : this.getRepaymentSource().equals(other.getRepaymentSource()))
            && (this.getRepaymentSourceRemark() == null ? other.getRepaymentSourceRemark() == null : this.getRepaymentSourceRemark().equals(other.getRepaymentSourceRemark()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getProjectFinancingId() == null) ? 0 : getProjectFinancingId().hashCode());
        result = prime * result + ((getMaximunInterest() == null) ? 0 : getMaximunInterest().hashCode());
        result = prime * result + ((getOccupyTimeStart() == null) ? 0 : getOccupyTimeStart().hashCode());
        result = prime * result + ((getOccupyTimeEnd() == null) ? 0 : getOccupyTimeEnd().hashCode());
        result = prime * result + ((getOccupyTimeUnit() == null) ? 0 : getOccupyTimeUnit().hashCode());
        result = prime * result + ((getCanProvideRiskControl() == null) ? 0 : getCanProvideRiskControl().hashCode());
        result = prime * result + ((getCanProvideRiskControlRemark() == null) ? 0 : getCanProvideRiskControlRemark().hashCode());
        result = prime * result + ((getCollateralType() == null) ? 0 : getCollateralType().hashCode());
        result = prime * result + ((getCollateralTypeRemark() == null) ? 0 : getCollateralTypeRemark().hashCode());
        result = prime * result + ((getCollateralValues() == null) ? 0 : getCollateralValues().hashCode());
        result = prime * result + ((getCollateralValuesUnit() == null) ? 0 : getCollateralValuesUnit().hashCode());
        result = prime * result + ((getRepaymentSource() == null) ? 0 : getRepaymentSource().hashCode());
        result = prime * result + ((getRepaymentSourceRemark() == null) ? 0 : getRepaymentSourceRemark().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", projectFinancingId=").append(projectFinancingId);
        sb.append(", maximunInterest=").append(maximunInterest);
        sb.append(", occupyTimeStart=").append(occupyTimeStart);
        sb.append(", occupyTimeEnd=").append(occupyTimeEnd);
        sb.append(", occupyTimeUnit=").append(occupyTimeUnit);
        sb.append(", canProvideRiskControl=").append(canProvideRiskControl);
        sb.append(", canProvideRiskControlRemark=").append(canProvideRiskControlRemark);
        sb.append(", collateralType=").append(collateralType);
        sb.append(", collateralTypeRemark=").append(collateralTypeRemark);
        sb.append(", collateralValues=").append(collateralValues);
        sb.append(", collateralValuesUnit=").append(collateralValuesUnit);
        sb.append(", repaymentSource=").append(repaymentSource);
        sb.append(", repaymentSourceRemark=").append(repaymentSourceRemark);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}